Interpreter Implementation of Advice
نویسندگان
چکیده
When late-binding of advice is used for incremental development or configuration, implementing advice weaving using code rewriting external to the VM can cause performance problems during application startup. We present an interpreter-based (non-rewriting) weaver that uses a simple table and cache structure for matching pointcuts against dynamic join points together with a simple mechanism for calling the matched advice. An implementation of our approach in the Jikes RVM shows its feasibility. Internal micro-benchmarks show dynamic join point execution overhead of approximately 28% in the common case where no advice is applicable and that start-up performance is improved over VM-external weavers. The cache and table structures could be used during later (i.e. JIT time) per-method rewrite based weaving to reduce pointcut matching overhead. We conclude that it is worthwhile to develop and evaluate a complete in-VM hybrid implementation, comprising both non-rewriting and rewriting based advice weaving.
منابع مشابه
Advice for Semifeasible Sets and the Complexity-Theoretic Cost(lessness) of Algebraic Properties
This paper provides a tutorial overview of the advice complexity of the semifeasible sets—informally put, the class of sets having a polynomial-time algorithm that, given as input any two strings of which at least one belongs to the set, will choose one that does belong to the set. No previous familiarity with either the semifeasible sets or advice complexity will assumed, and when we include p...
متن کاملInterpreter prototypes from language definition style specifications by GREG MICHAELSON
Language definition techniques may be applied to the specification of a wide range of problems. Language implementation techniques may then be used to construct interpreter prototypes. The use of an interpreter-interpreter language for the implementation of interpreter prototypes circumvents some of the disadvantages of contemporary programming languages and software tools.
متن کاملImplementing a performant scheme interpreter for the web in asm.js
This paper presents the implementation of an efficient interpreter for a Schemelike language using manually written asm.js code. The asm.js specification defines an optimizable subset of JavaScript which has already served well as a compilation target for web applications where performance is critical. However, its usage as a human-writable language that can be integrated into existing projects...
متن کاملCARMA: Platform Freedom for a Graphical Lisp Application through Armed Bear Common Lisp
CARMA is an advisory system that uses artificiallyintelligent techniques including case-based reasoning to provide advice about the most environmentally and economically effective responses to grasshopper infestations. CARMA’s core AI reasoner was initially written in Common Lisp and integrated with an Allegro Common Lisp for Windows graphical user interface (GUI). CARMA went public in 1996 and...
متن کاملA Modular XQuery Implementation
CellStore/XQuery is modular a implementation of the XML Query Language interpreter. Primary goal of the implementation is to provide open experimental platform for implementing and testing new query optimization techniques for querying XML data. This paper describes architecture and design features of the implementation as well as possible approaches to extending the interpreter.
متن کامل